home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Libraries / Fab Libraries / Conversions.a < prev    next >
Text File  |  1994-01-03  |  2KB  |  179 lines

  1. * asm-optimized routines for numerical conversions
  2.  
  3.     CASE    ON
  4. *    STRING    PASCAL
  5.  
  6. *    INCLUDE    'Notification.a'
  7. *    INCLUDE    'SysEqu.a'
  8. *    INCLUDE    'TimeEqu.a'
  9. *    INCLUDE    'Traps.a'
  10. *    INCLUDE    'Processes.a'
  11.  
  12.     SEG    'Main'
  13. * pascal
  14. SHORTTOHEXTEXT    PROC    EXPORT
  15.     MOVEA.L    (SP)+,A1
  16.     MOVEA.L    (SP)+,A0
  17.     MOVE.W    (SP)+,D0
  18.     MOVEQ    #3,D2
  19. @loop
  20.     ROL.W    #4,D0
  21.     MOVE.B    D0,D1
  22.     ANDI.B    #15,D1
  23.     ADDI.B    #48,D1
  24.     CMPI.B    #57,D1
  25.     BLS.S    @oltre
  26.     ADDQ.B    #7,D1
  27. @oltre
  28.     MOVE.B    D1,(A0)+
  29.     DBF        D2,@loop
  30.     MOVE.L    A0,(SP)
  31.     JMP        (A1)
  32.  
  33.     ENDP
  34.  
  35. * pascal
  36. SHORTTOHEXSTRING    PROC    EXPORT
  37.     MOVEA.L    (SP)+,A1
  38.     MOVEA.L    (SP)+,A0
  39.     MOVE.W    (SP)+,D0
  40.     MOVE.B    #4,(A0)+
  41.     MOVEQ    #3,D2
  42. @loop
  43.     ROL.W    #4,D0
  44.     MOVE.B    D0,D1
  45.     ANDI.B    #15,D1
  46.     ADDI.B    #48,D1
  47.     CMPI.B    #57,D1
  48.     BLS.S    @oltre
  49.     ADDQ.B    #7,D1
  50. @oltre
  51.     MOVE.B    D1,(A0)+
  52.     DBF        D2,@loop
  53.     JMP        (A1)
  54.  
  55.     ENDP
  56.  
  57. * pascal
  58. SHORTTOOCTSTRING    PROC    EXPORT
  59.     MOVEA.L    (SP)+,A1
  60.     MOVEA.L    (SP)+,A0
  61.     MOVE.W    (SP)+,D0
  62.     MOVE.B    #6,(A0)+
  63.     ROL.W    #1,D0
  64.     MOVE.B    D0,D1
  65.     ANDI.B    #1,D1
  66.     ADDI.B    #48,D1
  67.     MOVE.B    D1,(A0)+
  68.     MOVEQ    #4,D2
  69. @loop
  70.     ROL.W    #3,D0
  71.     MOVE.B    D0,D1
  72.     ANDI.B    #7,D1
  73.     ADDI.B    #48,D1
  74.     MOVE.B    D1,(A0)+
  75.     DBF        D2,@loop
  76.     JMP        (A1)
  77.  
  78.     ENDP
  79.  
  80. * pascal
  81. SHORTTOBINSTRING    PROC    EXPORT
  82.     MOVEA.L    (SP)+,A1
  83.     MOVEA.L    (SP)+,A0
  84.     MOVE.W    (SP)+,D0
  85.     MOVE.B    #16,(A0)+
  86.     MOVEQ    #15,D2
  87. @loop
  88.     MOVEQ    #48,D1
  89.     TST.W    D0
  90.     BPL.S    @dopo
  91.     ADDQ.B    #1,D1
  92. @dopo
  93.     MOVE.B    D1,(A0)+
  94.     LSL.W    #1,D0
  95.     DBF        D2,@loop
  96.     JMP        (A1)
  97.  
  98.     ENDP
  99.  
  100. * pascal
  101. HEXSTRINGTOSHORT    PROC    EXPORT
  102.     MOVE.L    (SP)+,D0
  103.     MOVEA.L    (SP)+,A1
  104.     MOVEA.L    (SP)+,A0
  105.     MOVE.L    D0,-(SP)
  106.     MOVEQ    #0,D0
  107.     MOVEQ    #0,D2
  108.     MOVE.B    (A0)+,D2
  109.     SUBQ.B    #1,D2
  110.     ASL.W    #2,D2
  111. @loop
  112.     MOVEQ    #0,D1
  113.     MOVE.B    (A0)+,D1
  114.     SUBI.B    #48,D1
  115.     CMPI.B    #9,D1
  116.     BLS.S    @vabene
  117.     SUBQ.B    #7,D1
  118. @vabene
  119.     ASL.W    D2,D1
  120.     ADD.W    D1,D0
  121.     SUBQ.B    #4,D2
  122.     BGE.S    @loop
  123.     MOVE.W    D0,(A1)
  124.     RTS
  125.  
  126.     ENDP
  127.  
  128. * pascal
  129. OCTSTRINGTOSHORT    PROC    EXPORT
  130.     MOVE.L    (SP)+,D0
  131.     MOVEA.L    (SP)+,A1
  132.     MOVEA.L    (SP)+,A0
  133.     MOVE.L    D0,-(SP)
  134.     MOVEQ    #0,D0
  135.     MOVEQ    #0,D2
  136.     MOVE.B    (A0)+,D2
  137.     SUBQ.B    #1,D2
  138.     MOVE.W    D2,D1
  139.     ADD.W    D2,D2
  140.     ADD.W    D1,D2
  141. @loop
  142.     MOVEQ    #0,D1
  143.     MOVE.B    (A0)+,D1
  144.     SUBI.B    #48,D1
  145.     ASL.W    D2,D1
  146.     ADD.W    D1,D0
  147.     SUBQ.B    #3,D2
  148.     BGE.S    @loop
  149.     MOVE.W    D0,(A1)
  150.     RTS
  151.  
  152.     ENDP
  153.  
  154. * pascal
  155. BINSTRINGTOSHORT    PROC    EXPORT
  156.     MOVE.L    (SP)+,D0
  157.     MOVEA.L    (SP)+,A1
  158.     MOVEA.L    (SP)+,A0
  159.     MOVE.L    D0,-(SP)
  160.     MOVEQ    #0,D0
  161.     MOVEQ    #0,D2
  162.     MOVE.B    (A0)+,D2
  163.     SUBQ.B    #1,D2
  164. @loop
  165.     MOVEQ    #0,D1
  166.     MOVE.B    (A0)+,D1
  167.     SUBI.B    #48,D1
  168.     ASL.W    D2,D1
  169.     OR.W    D1,D0
  170.     DBF        D2,@loop
  171.     MOVE.W    D0,(A1)
  172.     RTS
  173.  
  174.     ENDP
  175.  
  176.  
  177.     END
  178.  
  179.